Redundant Array of Inexpensive or Independent Disks ("RAID") devices are an increasingly popular way to store large amounts of computer data. RAID devices typically consist of a RAID controller and multiple low capacity personal computer type disk drives that are bundled together to form a single high capacity drive. A RAID device is usually less expensive than conventional high capacity drives because the personal computer type drives are relatively inexpensive based on their high volume of production.
Because RAID devices include multiple disk drives, the probability that one of the drives will fail at any given time is relatively high. An issue with RAID devices is how to avoid the loss of data when one or more of the drives fail. One solution to this issue is to "stripe" a single data block across multiple disk drives in the RAID device. The data block is striped by breaking the block into multiple pieces or portions and storing each portion on a different disk drive. Frequently, parity information for the entire block is stored on one of the drives. If a single drive fails, the piece of the data block that was stored on the failed drive can be reassembled based on the remaining portions of the data block and the parity information stored on the other drives. U.S. Pat. No. 4,761,785 discloses an example of a RAID device that performs striping.
In most RAID devices, a host computer sends an entire data block in one piece to the RAID controller. The RAID controller must then partition the data block into multiple sub-blocks, calculate a parity block, and then write the sub-blocks and parity block to the disk drives. Because the RAID controller is required to perform all of these steps each time a data block is stored, the RAID controller causes some delay when data is stored on a RAID device. The delay can detrimentally slow the process of striping data on a RAID device.
Based on the foregoing, there is a need for an method and apparatus to more efficiently stripe data on a RAID device.